<?php

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 * Description of EnPrematriculaYPerdidaAnteriormente
 *
 * @author JeyDotC
 */
class EnPrematriculaYPerdidaAnteriormente extends Plugin {
    /**
     *
     * @var MatriculaAcademica
     */
    private $module;

    public function aroundModuleQuitarCurso(CursoPk $cursopk) {
        $execute = true;
        
        $this->module = $this->baseObject;
        if($this->isInPreMatricula($cursopk)){
            if ($this->perdidaAnteriorMente($cursopk)) {
                $execute = false;
                $this->module->addMessage(new Message("<p>No puedes retirar esta materia porque est&aacute; en tu prematr&iacute;cula y la has reprobado en periodos anteriores.</p>", "Materia obligatoria: ", Message::ERROR));
            }
        }
        
        return $execute;
    }
    
    private function isInPreMatricula(CursoPk $cursoPk) {
        $inPrematricula = false;
        $preMatricula = $this->module->model->academicRegistration->GetPreMatricula();
        
        foreach ($preMatricula as /* @var $cursoPrematricula Cursos */ $cursoPrematricula) {
            if($cursoPrematricula->getCursoPk()->getCodigoMateria() == $cursoPk->getCodigoMateria()){
                $inPrematricula = true;
                break;
            }
        }
        
        return $inPrematricula;
    }
    
    private function perdidaAnteriorMente(CursoPk $cursoPk) {
        $perdidoAnteriorMente = false;
        $noAprobados = $this->module->model->registeredCourse->GetNoAprobados();
        
        foreach ($noAprobados as /* @var $cursoNoAproBado CursosMatriculados */ $cursoNoAproBado) {
            if($cursoNoAproBado->getCurso()->getCursoPk()->getCodigoMateria() == $cursoPk->getCodigoMateria()){
                $perdidoAnteriorMente = true;
                break;
            }
        }
        
        return $perdidoAnteriorMente;
    }
    
}

?>
